﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AutoLoL.Entities
{
    public class InibinKeys
    {
        public static readonly uint[] CHARACTER_MODEL_SKN_PATH_KEYS = new uint[]
        {
            (uint)InibinKeys.Character.PATH_SKIN1_SKN,
            (uint)InibinKeys.Character.PATH_SKIN2_SKN,
            (uint)InibinKeys.Character.PATH_SKIN3_SKN,
            (uint)InibinKeys.Character.PATH_SKIN4_SKN,
            (uint)InibinKeys.Character.PATH_SKIN5_SKN,
            (uint)InibinKeys.Character.PATH_SKIN6_SKN,
            (uint)InibinKeys.Character.PATH_SKIN7_SKN
        };

        public static readonly uint[] CHARACTER_MODEL_DDS_PATH_KEYS = new uint[]
        {
            (uint)InibinKeys.Character.PATH_SKIN1_DDS,
            (uint)InibinKeys.Character.PATH_SKIN2_DDS,
            (uint)InibinKeys.Character.PATH_SKIN3_DDS,
            (uint)InibinKeys.Character.PATH_SKIN4_DDS,
            (uint)InibinKeys.Character.PATH_SKIN5_DDS,
            (uint)InibinKeys.Character.PATH_SKIN6_DDS,
            (uint)InibinKeys.Character.PATH_SKIN7_DDS
        };

        public static readonly uint[] MASTERY_LEVEL_DESCRIPTION_KEYS = new uint[]
        {
            (uint)InibinKeys.Mastery.FCK_DESC_LVL1,
            (uint)InibinKeys.Mastery.FCK_DESC_LVL2,
            (uint)InibinKeys.Mastery.FCK_DESC_LVL3,
            (uint)InibinKeys.Mastery.FCK_DESC_LVL4,
            (uint)InibinKeys.Mastery.FCK_DESC_LVL5
        };

        public static readonly uint[] ITEM_BUILDS_INTO_KEYS = new uint[]
        {
            (uint)InibinKeys.Item.INT_BUILDS_INTO_1,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_2,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_3,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_4,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_5,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_6,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_7,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_8,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_9,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_10,
            (uint)InibinKeys.Item.INT_BUILDS_INTO_11
        };

        public static readonly uint[] ITEM_BUILT_FROM_KEYS = new uint[]
        {
            (uint)InibinKeys.Item.INT_BUILT_FROM_1,
            (uint)InibinKeys.Item.INT_BUILT_FROM_2,
            (uint)InibinKeys.Item.INT_BUILT_FROM_3,
            (uint)InibinKeys.Item.INT_BUILT_FROM_4,
            (uint)InibinKeys.Item.INT_BUILT_FROM_5,
            (uint)InibinKeys.Item.INT_BUILT_FROM_6,
            (uint)InibinKeys.Item.INT_BUILT_FROM_7,
            (uint)InibinKeys.Item.INT_BUILT_FROM_8,
            (uint)InibinKeys.Item.INT_BUILT_FROM_9,
            (uint)InibinKeys.Item.INT_BUILT_FROM_10,
            (uint)InibinKeys.Item.INT_BUILT_FROM_11
        };

        public enum Character : uint
        {
            // Font config keys
            FCK_NAME = 82690155,
            FCK_DESCRIPTION = 3747042364,
            FCK_LORE = 4243215483,
            FCK_PASSIVE_NAME = 3401798261,
            FCK_PASSIVE_DESCRIPTION = 743602011,
            FCK_TIPS = 70667385,
            FCK_OPPOSING = 70667386,

            // Misc
            IS_CHAMPION = 3086385998,

            // Files
            PATH_ICON_DDS = 3606610482,
            PATH_SKIN1_DDS = 2640183547,
            PATH_SKIN2_DDS = 664710616,
            PATH_SKIN3_DDS = 4206390233,
            PATH_SKIN4_DDS = 3453102554,
            PATH_SKIN5_DDS = 2699814875,
            PATH_SKIN6_DDS = 1946527196,
            PATH_SKIN7_DDS = 1193239517,

            PATH_SKIN1_SKN = 769344815,
            PATH_SKIN2_SKN = 306040338,
            PATH_SKIN3_SKN = 525951185,
            PATH_SKIN4_SKN = 745862032,
            PATH_SKIN5_SKN = 965772879,
            PATH_SKIN6_SKN = 1185683726,
            PATH_SKIN7_SKN = 1405594573,

            SKILL_NAME_1 = 404599689,
            SKILL_NAME_2 = 404599690,
            SKILL_NAME_3 = 404599691,
            SKILL_NAME_4 = 404599692
        }

        public enum Item : uint
        {
            // Somehow there are wrong and duplicate values in the INT_ID field.
            // To get the item ID it must be truncated from the value in the FCK_DESCRIPTION field
            // INT_ID = 1250849294,
            INT_BUILDS_INTO_1 = 1652767513,
            INT_BUILDS_INTO_2 = 1652767514,
            INT_BUILDS_INTO_3 = 1652767515,
            INT_BUILDS_INTO_4 = 1652767516,
            INT_BUILDS_INTO_5 = 1652767517,
            INT_BUILDS_INTO_6 = 1652767518,
            INT_BUILDS_INTO_7 = 1652767519,
            INT_BUILDS_INTO_8 = 1652767520,
            INT_BUILDS_INTO_9 = 1652767521,
            INT_BUILDS_INTO_10 = 1652767522,
            INT_BUILDS_INTO_11 = 1652767523,
            INT_BUILT_FROM_1 = 973644272,
            INT_BUILT_FROM_2 = 973644273,
            INT_BUILT_FROM_3 = 973644274,
            INT_BUILT_FROM_4 = 973644275,
            INT_BUILT_FROM_5 = 973644276,
            INT_BUILT_FROM_6 = 973644277,
            INT_BUILT_FROM_7 = 973644278,
            INT_BUILT_FROM_8 = 973644279,
            INT_BUILT_FROM_9 = 973644280,
            INT_BUILT_FROM_10 = 973644281,
            INT_BUILT_FROM_11 = 973644282,
            INT_PRICE = 2478814953,
            FCK_NAME = 2120726765,
            FCK_DESCRIPTION = 3747042364,
            PATH_ICON_DDS = 4278916085,
            IS_VALID = 1169232412
        }

        public enum Mastery : uint
        {
            FCK_NAME = 888918147,
            FCK_DESC_LVL1 = 3848571446,
            FCK_DESC_LVL2 = 693168439,
            FCK_DESC_LVL3 = 1832732728,
            FCK_DESC_LVL4 = 2972297017,
            FCK_DESC_LVL5 = 4111861306,
        }

        public enum SummonerSpell : uint
        {
            FCK_NAME = 1805538005,
            FCK_DESCRIPTION = 3431853604,
            FCK_TOOLTIP = 2634919164,
            PATH_DDS_ICON = 2059614685,
            IS_VALID = 2183804214
        }
    }
}

#region Keys
/*

[[[ UNVERIFIED ]]]

public class ChampionMapping
{
public static UInt32 Id = 2921476548;
public static UInt32 Name = 82690155;
public static UInt32 Description = 3747042364;
public static UInt32 Lore = 4243215483;
public static UInt32 ImageFileName = 3606610482;
public static UInt32 Tags = 4146314945;
public static UInt32 FirstAbilityReference = 404599689;
public static UInt32 SecondAbilityReference = 404599690;
public static UInt32 ThirdAbilityReference = 404599691;
public static UInt32 FourthAbilityReference = 404599692;
public static UInt32 PassiveAbilityName = 3401798261;
public static UInt32 PassiveAbilityFlavorText = 743602011;
public static UInt32 PassiveImageFileName = 3810483779;
public static UInt32 ChampionValid = 82690155;

public static UInt32 Damage = 1880118880;
public static UInt32 DamagePerLevel = 1139868982;
public static UInt32 Health = 742042233;
public static UInt32 HealthPerLevel = 3306821199;
public static UInt32 Mana = 742370228;
public static UInt32 ManaPerLevel = 1003217290;
public static UInt32 MovementSpeed = 1081768566;
public static UInt32 Armor = 2599053023;
public static UInt32 ArmorPerLevel = 1608827366;
public static UInt32 MagicResist = 1395891205;
public static UInt32 MagicResistPerLevel = 4032178956;
public static UInt32 HealthRegen = 4128291318;
public static UInt32 HealthRegenPerLevel = 3062102972;
public static UInt32 ManaRegen = 619143803;
public static UInt32 ManaRegenPerLevel = 1248483905;
}

public class AbilityMapping
{
public static UInt32 Name = 1805538005;
public static UInt32 FlavorText = 3431853604;
public static UInt32 Description = 2634919164;
public static UInt32 Range = 3806805222;
public static UInt32 ImageFileName = 2059614685;

public static UInt32 Effect1AmountLevel1 = 466816973;
public static UInt32 Effect1AmountLevel2 = 4059954766;
public static UInt32 Effect1AmountLevel3 = 3358125263;
public static UInt32 Effect1AmountLevel4 = 2656295760;
public static UInt32 Effect1AmountLevel5 = 1954466257;

public static UInt32 Effect2AmountLevel1 = 3898289358;
public static UInt32 Effect2AmountLevel2 = 3196459855;
public static UInt32 Effect2AmountLevel3 = 2494630352;
public static UInt32 Effect2AmountLevel4 = 1792800849;
public static UInt32 Effect2AmountLevel5 = 1090971346;

public static UInt32 StartManaCost = 3771724453;
public static UInt32 EndManaCost = 3771724457;
}

public class ItemMapping
{
public static UInt32 ItemValid = 1169232412;

public static UInt32 Id = 1250849294;
public static UInt32 Name = 2120726765;
public static UInt32 StartBuildsInto = 1652767513;
public static UInt32 EndBuildsInto = 1652767523;
public static UInt32 StartBuiltFrom = 973644272;
public static UInt32 EndBuiltFrom = 973644282;
public static UInt32 Description = 3747042364;
public static UInt32 ImageFileName = 4278916085;
public static UInt32 GoldCost = 2478814953;

public static UInt32 AbilityPower = 3524488927;
public static UInt32 Armor = 2125415132;
public static UInt32 Damage = 899933219;
public static UInt32 Health = 1993475205;
public static UInt32 HealthRegenPerSecond = 3412476166;
public static UInt32 Mana = 2522004106;
public static UInt32 ManaRegenPerSecond = 1108872257;
public static UInt32 MagicResist = 1673461700;

public static UInt32 PercentAttackSpeed = 4117873288;
public static UInt32 PercentCriticalStrikeChance = 3756168283;
public static UInt32 PercentLifeSteal = 1581007476;
public static UInt32 PercentMovementSpeed = 1249439471;
public static UInt32 PercentManaSteal = 1675658961;

public static UInt32 PassiveGoldEverySecond = 3760373072;
}

public class RuneMapping
{
public static UInt32 RuneValid = 3086385998; // TRUE

public static UInt32 ImageFileName = 2414666880;
public static UInt32 Name = 2120726765;
public static UInt32 Tier = 3448275386;
public static UInt32 Color = 973892934;
public static UInt32 Description = 3747042364;

// TODO: Need to make new class for Rune Modifiers
public static UInt32 AbilityPower = 3524488927;
public static UInt32 AbilityPowerPerLevel = 2904354520;
public static UInt32 Armor = 2125415132;
public static UInt32 ArmorPenetration = 1666342795;
public static UInt32 AttackDamage = 899933219;
public static UInt32 AttackDamagePerLevel = 3408390072;
public static UInt32 CriticalDamage = 921972736;
public static UInt32 GoldEveryTenSeconds = 3596459249;
public static UInt32 Health = 1993475205;
public static UInt32 HealthPerLevel = 2503536726;
public static UInt32 HealthRegenPerSecond = 3412476166;
public static UInt32 HealthRegenPerSecondPerLevel = 3470517503;
public static UInt32 MagicPenetration = 1105291097;
public static UInt32 MagicResist = 1673461700;
public static UInt32 MagicResistPerLevel = 1201590105;
public static UInt32 Mana = 2522004106;
public static UInt32 ManaPerLevel = 2481029467;
public static UInt32 ManaRegenPerSecond = 1108872257;
public static UInt32 PercentAttackSpeed = 4117873288;
public static UInt32 PercentCooldownReduction = 331225348;
public static UInt32 PercentCooldownReductionPerLevel = 3683445259;
public static UInt32 PercentCriticalChance = 3756168283;
public static UInt32 PercentCriticalDamage = 921972736;
public static UInt32 PercentDodge = 250160022;
public static UInt32 PercentExperienceGained = 1975167751;
public static UInt32 PercentMovementSpeed = 1249439471;
public static UInt32 PercentTimeDeadReduction = 450607838;
} 
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
742042233 Health (base)
3306821199 Health (per level)
742370228 Mana (base)
1003217290 Mana (per level)
2599053023 Armor (base)
1608827366 Armor (per level)
1395891205 Magic resist (base)
4032178956 Magic resist (per level)
1081768566 Movement speed (base)
1387461685 Range (base)
4128291318 HP regen per 1 (base)
3062102972 HP regen per 1 (per level)
619143803 MP regen per 1 (base)
1248483905 MP regen per 1 (per level)
1880118880 Damage (base)
1139868982 Damage (per level) 
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------


1091449537:Default skin ID
2640183547:Default skin gfx file
3939240930:Default skin model file
769344815:Default skin skin file
1895303501:Default skin skeleton file
693474744:Default Skin weight file
1350629540:Skin #2 ID
1742464788:Skin #2 name
664710616:Skin #2 gfx file
1008195909:Skin #2 model file
306040338:Skin #2 skin file
599757744:Skin #2 skeleton file
2823479707:Skin #2 weight file
3726994531:Skin #3 ID
1652845395:Skin #3 name
4206390233:Skin #3 gfx file
1380203140:Skin #3 model file
525951185:Skin #3 skin file
3575010799:Skin #3 skeleton file
1264358234:Skin #3 weight file
73050088:Recommended Item #1
73050089:Recommended Item #2
73050090:Recommended Item #3
73050091:Recommended Item #4
73050092:Recommended Item #5
73050093:Recommended Item #6
4146314945:Attributes
11266465:[R] Skill Name
404599692:[R] Skill name (without whitespaces)
2779212989:[R] Skill description
3646501220:[Q] Skill name
404599689:[Q] Skill name (without whitespaces)
3655487418:[Q] Skill Description
3866412067:[W] Skill name
404599690:[W] Skill name (without whitespaces)
500084411:[W] Skill Description
4086322914:[E] Skill name
404599691:[E] Skill name (without whitespaces)
1639648700:[E] Skill description
742370228: Mana (base)
2599053023:Armor (base)
1081768566:Movementspeed (base)
1387461685:Range (base)
1395891205:Magic resist (base)
770205030:Critchance (base)
2921476548: MP regen (base) 

*/
#endregion